home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- #include <gl.h>
- #include <device.h>
- #include <math.h>
-
- long RX = 300;
- long RY = 300;
-
- #define PI 3.1415926535897
-
- float *DX, *DY;
- unsigned char *R, *R1;
-
- #define raster(i, j, c) (*(R + (i*RY + j)*3 + c))
- #define raster1(i, j, c) (*(R1 + (i*RY + j)*3 + c))
- #define dx(i, j) (*(DX + (i*RY + j)))
- #define dy(i, j) (*(DY + (i*RY + j)))
-
- long ipattern = 0, idx = 0, idy = 0;
- long ipatternmax = 8, dmax = 26;
- float param1 = 1.0, param2 = 1.0;
- long generation = 0, stopped = 0;
- short dflag = 0;
-
- void allocrasters()
- {
- R = (unsigned char *)malloc(RX*RY*3);
- R1 = (unsigned char *)malloc(RX*RY*3);
- DX = (float *)malloc(RX*RY*sizeof(float));
- DY = (float *)malloc(RX*RY*sizeof(float));
- }
-
- void displayraster()
- {
- long i, j, k, l, m;
- char title[50], *halt;
-
- if (dflag == 0) {
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- k = raster(i, j, 0);
- l = raster(i, j, 1);
- m = raster(i, j, 2);
- RGBcolor(k, l, m);
- pnt2i(i, j);
- }
- } else {
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- k = raster1(i, j, 0);
- l = raster1(i, j, 1);
- m = raster1(i, j, 2);
- RGBcolor(k, l, m);
- pnt2i(i, j);
- }
- }
- swapbuffers();
- }
-
- void initraster()
- {
- long i, j, k, i1, j1, i_1, j_1;
- long th, sh;
- float r, s, v[3], x1, y1;
- unsigned long *lptr;
-
- switch (ipattern) {
- default:
- case -1:
- sizeofimage("in.rgb",&RX, &RY);
- allocrasters();
- lptr = (unsigned long *)longimagedata("in.rgb");
- for (j = 0; j < RY; j++) {
- for (i = 0; i < RX; i++) {
- int c = *lptr++;
- raster(i, j, 0) = (c>>0)&0xff;
- raster(i, j, 1) = (c>>8)&0xff;
- raster(i, j, 2) = (c>>16)&0xff;
- }
- }
- break;
- case 0:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- raster(i, j, 0) = 0;
- raster(i, j, 1) = 0;
- raster(i, j, 2) = 0;
- }
- break;
- case 1:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- raster(i, j, 0) = (i*5*255/(RX-1))&0xff;
- raster(i, j, 1) = (i*5*255/(RX-1))&0xff;
- raster(i, j, 2) = (i*5*255/(RX-1))&0xff;
- }
- break;
- case 2:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- r = 60.0*((float)i)/(RX-1);
- th = r;
- if ((th % 5) == 0) i1 = 0; else i1 = 255;
- raster(i, j, 0) = i1;
- raster(i, j, 1) = i1;
- raster(i, j, 2) = i1;
- }
- break;
- case 3:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- r = 60.0*((float)i)/(RX-1);
- th = r;
- s = 60.0*((float)j)/(RY-1);
- sh = s;
- if (((sh % 5) == 0) ||((th % 5) == 0)) i1 = 0; else i1 = 255;
- raster(i, j, 0) = i1;
- raster(i, j, 1) = i1;
- raster(i, j, 2) = i1;
- }
- break;
- case 4:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- i1 = i-RX/2; j1 = j-RY/2;
- raster(i, j, 0) = ((i1*i1+j1*j1)/50)&0xff;
- raster(i, j, 1) = ((i1*i1+j1*j1)/45)&0xff;
- raster(i, j, 2) = ((i1*i1+j1*j1)/70)&0xff;
- }
- break;
- case 5:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- th = atan2((j-(RY-1)/2.0), (i-(RX-1)/2.0))*127.5/PI;
- raster(i, j, 0) = (th)&0xff;
- raster(i, j, 1) = (th+85)&0xff;
- raster(i, j, 2) = (th+170)&0xff;
- }
- break;
- case 6:
- for (i = 0; i < RX; i++) {
- v[0] = 126+126.0*cos((i*PI*10)/(RY-1));
- v[1] = 126+126.0*cos((i*PI*8)/(RY-1));
- v[2] = 126+126.0*cos((i*PI*2)/(RY-1));
- for (j = 0; j < RY; j++) {
- raster(i, j, 0) = v[0];
- raster(i, j, 1) = v[1];
- raster(i, j, 2) = v[2];
- }
- }
- break;
- case 7:
- for (i = 0; i < RX; i++) {
- for (j = 0; j < RY; j++) {
- v[0] = 126+126.0*cos(((abs(i-RX/2)+abs(j-RY/2))*PI*10)/(RY+RX-2));
- v[1] = 126+126.0*cos(((abs(i-RX/2)+abs(j-RY/2))*PI*8)/(RY+RX-2));
- v[2] = 126+126.0*cos(((abs(i-RX/2)+abs(j-RY/2))*PI*2)/(RY+RX-2));
- raster(i, j, 0) = v[0];
- raster(i, j, 1) = v[1];
- raster(i, j, 2) = v[2];
- }
- }
- break;
- case 8:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- raster(i, j, 0) = (i*255/(RX-1))&0xff;
- raster(i, j, 1) = (j*255/(RX-1))&0xff;
- raster(i, j, 2) = 0;
- }
- break;
- }
- switch (idx) {
- default:
- case 0:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = 0;
- }
- break;
- case 1:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*12*cos((j*PI*10*param2)/(RY-1));
- }
- break;
- case 2:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*12*cos((j*PI*4*param2)/(RY-1));
- }
- break;
- case 3:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*15*cos((j*PI*2*param2)/(RY-1));
- }
- break;
- case 4:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*8*cos((j*PI*4*param2)/(RY-1));
- }
- break;
- case 5:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*5*sin((j*PI*14*param2)/(RY-1));
- }
- break;
- case 6:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*15*sin((j*PI*param2)/(RY-1));
- }
- break;
- case 7:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*(float)j/30;
- }
- break;
- case 8:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*5*sin((j*PI*14)/(RY-1))*cos((i*PI*2*param2)/(RX-1));
- }
- break;
- case 9:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = (((rand())>>5)&0x1f) - 16;
- }
- for (k = 0; k < 4; k++)
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- i1 = i+1; j1 = j+1;
- i_1 = i-1; j_1 = j-1;
- if (i1 == RX) i1 = 0;
- if (j1 == RY) j1 = 0;
- if (i_1 == -1) i1 = RX-1;
- if (j_1 == -1) j1 = RY-1;
- dx(i, j) = (4*(dx(i, j)) + dx(i1, j1) + dx(i_1, j1) +
- dx(i_1, j_1) + dx(i1, j_1) + 2*(dx(i, j1) +
- dx(i, j_1) + dx(i1, j) + dx(i_1, j)))/16.0;
- }
- break;
- case 10:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*8*cos((j*PI*10*param2)/(RY-1));
- }
- break;
- case 11:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = 12.0*(x1*x1-y1*y1) + param1;
- }
- break;
- case 12:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = -param1*8.0*y1/(1.0+r*r);
- }
- break;
- case 13:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = -param1*8.0*x1/(1.0+r*r);
- }
- break;
- case 14:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = param1*8.0*x1/(1.0+r*r);
- }
- break;
- case 15:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1)-0.5;
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = param1*7.0*(x1)/(1.0+r*r);
- x1 = -1.0 + 2.0*i/(RX-1)+0.5;
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) -= param1*7.0*(x1)/(1.0+r*r);
- }
- break;
- case 16:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = -param1*8*y1/(.5+r) +x1*3;
- }
- break;
- case 17:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dx(i, j) = param1*5*sin((j*PI*14)/(RY-1))+cos((i*PI*2*param2)/(RX-1));
- }
- break;
- case 18:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dx(i, j) = param1*8.0*x1/(1.0+r)*cos(20*r);
- }
- break;
- case 19:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = param1*8.0*(x1*x1-y1*y1);
- }
- break;
- case 20:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- x1 *= param2; y1 *= param2;
- dx(i, j) = param1*8.0*exp(x1)*cos(5*y1);
- }
- break;
- case 21:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*8.0*(cos(4*PI*(x1-y1)));
- }
- break;
- case 22:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*8.0/(1.3+cos(4*PI*(x1-y1)));
- }
- break;
- case 23:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*8.0*(cos(param2*4*PI*(y1*y1)));
- }
- break;
- case 24:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*8.0*(cos(param2*4*PI*(y1*y1-x1*x1)));
- }
- break;
- case 25:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*12.0*x1*(cos(param2*4*PI*(y1)));
- }
- break;
- case 26:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dx(i, j) = -param1*15.0*x1*x1*(cos(param2*4*PI*(y1)));
- }
- break;
- }
- switch (idy) {
- default:
- case 0:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = 0;
- }
- break;
- case 1:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*12*cos((i*PI*10*param2)/(RX-1));
- }
- break;
- case 2:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*12*cos((i*PI*4*param2)/(RX-1));
- }
- break;
- case 3:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*15*cos((i*PI*2*param2)/(RX-1));
- }
- break;
- case 4:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*8*cos((i*PI*4*param2)/(RX-1));
- }
- break;
- case 5:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*5*sin((i*PI*14*param2)/(RX-1));
- }
- break;
- case 6:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*15*sin((i*PI*param2)/(RX-1));
- }
- break;
- case 7:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*(float)i/30;
- }
- break;
- case 8:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*5*sin((i*PI*14)/(RX-1))*cos((j*PI*2*param2)/(RY-1));
- }
- break;
- case 9:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = (((rand())>>5)&0x1f) - 16;
- }
- for (k = 0; k < 4; k++)
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- i1 = i+1; j1 = j+1;
- i_1 = i-1; j_1 = j-1;
- if (i1 == RX) i1 = 0;
- if (j1 == RY) j1 = 0;
- if (i_1 == -1) i1 = RX-1;
- if (j_1 == -1) j1 = RY-1;
- dy(i, j) = (4*dy(i, j) + dy(i1, j1) + dy(i_1, j1) +
- dy(i_1, j_1) + dy(i1, j_1) + 2*(dy(i, j1) +
- dy(i, j_1) + dy(i1, j) + dy(i_1, j)))/16.0;
- }
- break;
- case 10:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*8*cos((i*PI*10*param2)/(RX-1));
- }
- break;
- case 11:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = 12.0*x1*y1 + param2;
- }
- break;
- case 12:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = param1*8*x1/(1.0+r*r);
- }
- break;
- case 13:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = -param1*8.0*y1/(1.0+r*r);
- }
- break;
- case 14:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = param1*8.0*y1/(1.0+r*r);
- }
- break;
- case 15:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1)-0.5;
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = param1*7.0*y1/(1.0+r*r);
- x1 = -1.0 + 2.0*i/(RX-1)+0.5;
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) -= param1*7.0*(y1)/(1.0+r*r);
- }
- break;
- case 16:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = param1*8*x1/(0.5+r) +y1*3;
- }
- break;
- case 17:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- dy(i, j) = param1*5*sin((i*PI*14)/(RX-1))+cos((j*PI*2*param2)/(RY-1));
- }
- break;
- case 18:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- r = x1*x1+y1*y1;
- dy(i, j) = param1*8.0*y1/(1.0+r)*cos(20*r);
- }
- break;
- case 19:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = param1*8.0*x1*y1;
- }
- break;
- case 20:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- x1 *= param2; y1 *= param2;
- dy(i, j) = param1*8.0*exp(x1)*sin(5*y1);
- }
- break;
- case 21:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param2*8.0*(cos(4*PI*(x1+y1)));
- }
- break;
- case 22:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param2*8.0/(1.3+cos(4*PI*(x1+y1)));
- }
- break;
- case 23:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param1*8.0*(cos(param2*4*PI*(x1*x1)));
- }
- break;
- case 24:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param1*8.0*(cos(param2*4*PI*(x1*x1*x1)));
- }
- break;
- case 25:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param1*12.0*y1*(cos(param2*4*PI*(x1)));
- }
- break;
- case 26:
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- x1 = -1.0 + 2.0*i/(RX-1);
- y1 = -1.0 + 2.0*j/(RY-1);
- dy(i, j) = -param1*15.0*y1*y1*(cos(param2*4*PI*(x1)));
- }
- break;
- }
- }
-
- void iterate(unsigned char *R, unsigned char *R1)
- {
- long i, j, k;
- float i1, j1;
- long ifl, jfl, ifl1, jfl1, ifl2, jfl2;
- float ifr, jfr;
-
- generation++;
- for (i = 0; i < RX; i++)
- for (j = 0; j < RY; j++) {
- i1 = dx(i, j); j1 = dy(i, j);
- ifl = floor(i1); jfl = floor(j1);
- ifr = i1 - ifl; jfr = j1 - jfl;
- ifl1 = ifl+i; jfl1 = jfl+j;
- ifl2 = ifl1+1; jfl2 = jfl1+1;
- while (ifl1 >= RX) ifl1 -= RX;
- while (jfl1 >= RY) jfl1 -= RY;
- while (ifl2 >= RX) ifl2 -= RX;
- while (jfl2 >= RY) jfl2 -= RY;
- while (ifl1 < 0) ifl1 += RX;
- while (jfl1 < 0) jfl1 += RY;
- while (ifl2 < 0) ifl2 += RX;
- while (jfl2 < 0) jfl2 += RY;
- for (k = 0; k < 3; k++)
- raster1(i, j, k) = raster(ifl1, jfl1, k)*(1.0-ifr)*(1.0-jfr) +
- raster(ifl2, jfl1, k)*(ifr)*(1.0-jfr) +
- raster(ifl1, jfl2, k)*(1.0-ifr)*(jfr) +
- raster(ifl2, jfl2, k)*(ifr)*(jfr);
- }
- if (ipattern == 0)
- for (i = RX/2-5; i < RX/2+5; i++)
- for (j = RY/2-5; j < RY/2+5; j++)
- raster1(i, j, 0) = raster1(i, j, 1) = raster1(i, j, 2) = 255;
- }
-
- void printdata()
- {
- long i, j;
-
- printf("unsigned char reddata[%d][%d] = {\n", RX, RY);
- for (j = 0; j < RY; j++) {
- printf("{");
- for (i = 0; i < RX; i++) {
- printf("0x%2.2x,", raster(i, j, 0));
- }
- printf("},\n");
- }
- printf("};\n");
- printf("unsigned char greendata[%d][%d] = {\n", RX, RY);
- for (j = 0; j < RY; j++) {
- printf("{");
- for (i = 0; i < RX; i++) {
- printf("0x%2.2x,", raster(i, j, 1));
- }
- printf("},\n");
- }
- printf("};\n");
- printf("unsigned char bluedata[%d][%d] = {\n", RX, RY);
- for (j = 0; j < RY; j++) {
- printf("{");
- for (i = 0; i < RX; i++) {
- printf("0x%2.2x,", raster(i, j, 2));
- }
- printf("},\n");
- }
- printf("};\n");
- }
-
- float showdata[][6] = { /* last # must be even */
- {5, 1, 3, .5, 2, 30},
- {1, 8, 8, 1, 1, 24},
- {7, 8, 8, 1, 1, 20},
- {1, 1, 5, 1, 1, 24},
- {4, 6, 19, 1, 1, 46},
- {6, 2, 11, 1, 1, 30},
- {4, 17, 17, 1, 1, 20},
- {5, 22, 27, 1, 1, 40},
- };
-
- long showlength = 8;
-
- main(int argc, char **argv)
- {
- short val, i, j, maxiter, iter;
- long showno = showlength-1;
-
- prefsize(RX, RY);
- winopen("artshow");
- RGBmode();
- doublebuffer();
- gconfig();
- allocrasters();
- while (1) {
- iter = 0;
- showno++;
- if (showno == showlength) showno = 0;
- ipattern = showdata[showno][0];
- idx = showdata[showno][1];
- idy = showdata[showno][2];
- param1 = showdata[showno][3];
- param2 = showdata[showno][4];
- maxiter = showdata[showno][5];
- initraster();
- displayraster();
- while (1) {
- while (qtest()) switch(qread(&val)) {
- case REDRAW:
- displayraster();
- break;
- default:
- break;
- }
- if (stopped == 0) {
- if (dflag == 0)
- iterate(R, R1);
- else
- iterate(R1, R);
- if (iter++ == maxiter) break;
- dflag = 1 - dflag;
- displayraster();
- } else sginap(5);
- }
- }
- }
-